package com.c2rusthub.service.utils;

import com.c2rusthub.service.model.User;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;

import java.util.concurrent.TimeUnit;

public class UserCacheUtil {

    // 创建一个静态的Caffeine缓存实例，缓存用户信息
    private static final Cache<String, User> caffeineCache;

    static {
        // 初始化缓存，设置最大缓存大小和过期时间
        caffeineCache = Caffeine.newBuilder()
                .maximumSize(1000)  // 最大缓存数
                .expireAfterWrite(30, TimeUnit.MINUTES)  // 缓存过期时间（30分钟）
                .build();
    }

    /**
     * 获取缓存中的用户信息
     *
     * @param token 用户的token
     * @return 用户信息
     */
    public static User getUserFromCache(String token) {
        return caffeineCache.getIfPresent(token);  // 从缓存中获取用户信息
    }

    /**
     * 将用户信息存入缓存
     *
     * @param token 用户的token
     * @param user  用户信息
     */
    public static void putUserToCache(String token, User user) {
        caffeineCache.put(token, user);  // 将用户信息存入缓存
    }

    /**
     * 清除缓存中的用户信息
     *
     * @param token 用户的token
     */
    public static void removeUserFromCache(String token) {
        caffeineCache.invalidate(token);  // 清除缓存中的用户信息
    }
}
